#include <stdio.h>
#include <stdlib.h>
#include <algorithm>
#include <string.h>
#include <iostream>
#include <vector>
using namespace std;
typedef struct
{
    int x, y;
} weizhi;
int a[5][5], b[5][5], ans = 1000, dis[4][2] = {{1, 0}, {-1, 0}, {0, 1}, {0, -1}}, arr[5][5];
void dfs(int c, int d, int step)
{
    weizhi nc, nd;
    nc.x = c, nc.y = d;
    if (c == 4 && d == 4)
    {
        if (ans > step)
        {
            for (int h = 0; h < 5; h++)
            {
                for (int t = 0; t < 5; t++)
                {
                    arr[h][t] = b[h][t]; // 复制地图
                }
            }
        }
        return;
    }
    for (int i = 0; i < 4; i++)
    {
        nd.x = nc.x + dis[i][0];
        nd.y = nc.y + dis[i][1];
        if (nd.x >= 0 && nd.x < 5 && nd.y >= 0 && nd.y < 5 && a[nd.x][nd.y] == 0 && b[nd.x][nd.y] == 0)
        {
            b[nd.x][nd.y] = 1;
            dfs(nd.x, nd.y, step + 1);
            b[nd.x][nd.y] = 0; // 回溯标记
        }
    }
}
int main()
{
    for (int i = 0; i < 5; i++)
    {
        for (int j = 0; j < 5; j++)
        {
            cin >> a[i][j];
        }
    }
    dfs(0, 0, 0);
    printf("(0, 0)\n");
    for (int i = 0; i < 5; i++)
    {
        for (int j = 0; j < 5; j++)
        {
            if (arr[i][j] == 1)
                printf("(%d, %d)\n", i, j);
        }
    }
}